﻿#region License
/*

	Copyright (C) 2008 Oliver Charles, Daniel Hollander

	This program is free software: you can redistribute it and/or modify
	it under the terms of the GNU General Public License as published by
	the Free Software Foundation, either version 3 of the License, or
	(at your option) any later version.

	This program is distributed in the hope that it will be useful,
	but WITHOUT ANY WARRANTY; without even the implied warranty of
	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
	GNU General Public License for more details.

	You should have received a copy of the GNU General Public License
	along with this program.  If not, see <http://www.gnu.org/licenses/>.
	
*/
#endregion

using System.Drawing;
using Moebius.Components;

namespace Moebius.Hud
{
    /// <summary>
    /// An element is similar to an <see cref="Entity"/> in that is the basis for something that can be presented on
    /// the heads up display. Everything that can be shown on a HUD must derive from this base class.
    /// </summary>
    public abstract class Element
    {
        #region Properties

        private bool mVisible = true;

        private Point mLocation;

        /// <summary>
        /// Gets or sets the visibility of this HUD element.
        /// </summary>
        public bool Visible
        {
            get { return mVisible; }
            set { mVisible = value; }
        }

        /// <summary>
        /// Gets or sets the location of this HUD element on the screen
        /// </summary>
        public Point Location
        {
            get { return mLocation; }
            set { mLocation = value; }
        }

        #endregion

        #region Render

        /// <summary>
        /// Draw the element to the screen
        /// </summary>
        public abstract void Render();

        #endregion
    }
}
